package com.ddpyjqtd.utils;

import org.apache.commons.lang3.StringUtils;

/**
 * @Description: 将驼峰命名的属性转换成数据库下划线字段
 * 
 * @author: ddpyjqtd
 * @Date: 2019年3月25日
 *
 */
public class CamelCaseUtils {

	/**
	 * @Description: 将驼峰命名的属性转换成数据库下划线字段
	 * 
	 * @author: ddpyjqtd
	 * @Date: 2019年3月25日
	 *
	 * @param field
	 * @return
	 */
	public static String converter(String field) {
		if (StringUtils.isBlank(field)) {
			throw new RuntimeException("非法的字段属性，请检查。");
		}
		StringBuilder sb = new StringBuilder();
		// 1.将字符串转换成char[] 数组
		char[] ch = field.toCharArray();
		int i = 0;
		for (char c : ch) {
			// 2.判断出现大写的位置
			// 3.将大写字符转换成小写字符
			// 4.在记录的位置增加下划线
			// 5.循环 2-4
			if (isUpperChar(c) && i > 0) {
				sb.append("_").append(c);
			} else {
				sb.append(c);
			}
			i++;
		}
		return sb.toString().toUpperCase();
	}
	
	/**     
	 * @Description: 判断是否为大写
	 *    
	 * @author: ddpyjqtd   
	 * @Date: 2019年3月25日
	 *
	 * @param c
	 * @return    
	 */  
	private static boolean isUpperChar(char c) {
		return c >= 'A' && c<= 'Z';
	}
}
